import Request from './request'
import Setting from '@/setting.js'
import store from '@/store/index.js'

const request = new Request()

request.setConfig((config) => { /* 设置全局配置 */
	config.baseUrl = Setting.baseURL
	config.header = {
		...config.header
	}
	return config
})

/**
 * 自定义验证器，如果返回true 则进入响应拦截器的响应成功函数(resolve)，否则进入响应拦截器的响应错误函数(reject)
 * @param { Number } statusCode - 请求响应体statusCode（只读）
 * @return { Boolean } 如果为true,则 resolve, 否则 reject
 */
request.validateStatus = (statusCode) => {
	return statusCode === 200
}

request.interceptor.request((config, cancel) => { /* 请求之前拦截器 */
	config.header = {
		...config.header
	}
	// 显示加载
	uni.showNavigationBarLoading()
	// 判断是否需要权限
	let {
		url
	} = config
	// 使用用户资料获取token
	if (Setting.noAuth.includes(url)){
		config.header.Authorization = 'Basic amF2YWJveToxMjM='
	}
	// 需要权限则赋值token
	// let {
	// 	access_token,
	// 	app_id,
	// 	campus_id
	// } = store.state.user
	// if ((!access_token) || (!app_id || !campus_id)) {
	// 	uni.$mRouter.reLaunch({
	// 		route: uni.$mRoutesConfig.student.login
	// 	})
	// 	cancel("登录过期")
	// 	return config
	// }
	if(uni.getStorageSync('token')){
		let token = uni.getStorageSync('token');
		config.header.Authorization = `Bearer ${token}` 
	}
	
	
	


	/*
	if (!token) { // 如果token不存在，调用cancel 会取消本次请求，但是该函数的catch() 仍会执行
	  cancel('token 不存在') // 接收一个参数，会传给catch((err) => {}) err.errMsg === 'token 不存在'
	}
	**/
	return config
})

request.interceptor.response((response) => { /* 请求之后拦截器 */
	// if (response.data.code !== 200) { // 服务端返回的状态码不等于200，则reject()
	//   return Promise.reject(response)
	// }
	// if (response.config.custom.verification) { // 演示自定义参数的作用
	//   return response.data
	// }
	// 隐藏加载
	uni.hideLoading()
	uni.hideNavigationBarLoading()


	// let {
	// 	data,
	// 	config: {
	// 		url
	// 	}
	// } = response

	// if (!data) data = {
	// 	success: false,
	// 	data: {
	// 		status: "",
	// 		code: "",
	// 		message: ""
	// 	},

	// }

	// if (!data.data) data.data = {
	// 	status: "",
	// 	code: "",
	// 	message: ""
	// }
	// let {
	// 	success,
	// 	data: {
	// 		status,
	// 		code,
	// 		message
	// 	}
	// } = data

	// if(status==401){
	// 	uni.$mRouter.reLaunch({
	// 		route: uni.$mRoutesConfig.student.login
	// 	})
	// }
	// if (!success) {
	// 	uni.$mUtils.tErrorMsg(message)
	// 	if (code === 10021) {
	// 		setTimeout(() => {
	// 			uni.$mRouter.reLaunch({
	// 				route: uni.$mRoutesConfig.student.choose
	// 			})
	// 		}, 500)
	// 	}
	// }
	
	if(response.code == 401){
		uni.removeStorageSync('token');
		this.$mRouter.push({
			route: that.$mRoutesConfig.login.login
			
		})
		
	}

	return response.data
}, (response) => { // 请求错误做点什么
	// 隐藏加载
	uni.hideLoading()
	uni.hideNavigationBarLoading()
	// uni.$mUtils.tMsg("网络请求失败~")
	return response.data
})

export default request
